package com.haina.shop.service;

import com.haina.shop.domain.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.haina.shop.dto.OrderListDTO;
import com.haina.shop.dto.OrderParamDTO;
import com.haina.shop.dto.PayDTO;
import com.haina.shop.dto.SubmitOrderParam;
import com.haina.shop.result.IPageIndexImg;
import com.haina.shop.result.ServiceResult;
import com.haina.shop.vo.*;

import java.util.Map;


/**
* @author 48077
* @description 针对表【tz_order(订单表)】的数据库操作Service
* @createDate 2024-07-31 18:34:29
*/
public interface OrderService extends IService<Order> {
    /**
     * 获取我的订单订单数量
     */
    ServiceResult<OrderCountVO> getOrderCount();
    /**
     * 根据订单状态获取订单列表信息，状态为0时获取所有订单
     * @param dto
     */
    ServiceResult<IPageIndexImg<OrderVO>> getOrderList(OrderListDTO dto);
    /**
     * 根据订单号获取订单详情信息
     * @param orderNumber
     */
    ServiceResult<OrderDetailVO> getOrderDetail(String orderNumber);
    /**
     * 传入下单所需要的参数进行下单
     * @param dto
     * @return
     */
    ServiceResult<OrderConfirmVO> confirm(OrderParamDTO dto);
    /**
     * 根据订单号确认收获
     * @param orderNumber
     * @return
     */
    ServiceResult receiptByOrderNum(String orderNumber);
    /**
     * 根据订单号取消订单
     * @param orderNumber
     * @return
     */
    ServiceResult cancalByOrderNum(String orderNumber);
    /**
     * 根据订单号删除订单
     * @param orderNumber
     * @return
     */
    ServiceResult deleteByOrderNum(String orderNumber);

    /**
     * 提交订单
     * @paramparam
     * @return
     */
    ServiceResult<OrderNumberVO> submit(SubmitOrderParam param);
    /**
     * 支付
     * @return
     */
    ServiceResult pay(PayDTO dto);
}
